Dino Geek essaye de t'aider

Comment fonctionne la fonction `yield` en PHP ?


En PHP, la fonction `yield` est une construction du langage utilisée principalement pour créer des générateurs. Un générateur permet de produire une série de valeurs une à une, sur demande, au lieu de les calculer toutes en une fois et de les retourner dans un tableau. Cette approche peut conduire à des économies significatives de mémoire et à une meilleure performance, particulièrement lorsque l’on traite de grandes séries de données ou des collections potentiellement infinies.

  1. Fonctionnement de `yield`

Lorsque la fonction contenant le mot-clé `yield` est appelée, elle ne s’exécute pas comme une fonction classique. Au lieu de cela, elle retourne immédiatement un objet de la classe `Generator` qui peut être itéré. Lors de chaque itération, l’exécution de la fonction reprend à partir du point d’arrêt précédent (celui où `yield` a été utilisé), jusqu’à ce qu’un nouveau `yield` soit rencontré ou que la fonction se termine.

Voici un exemple simple pour illustrer :

```
function generatorExample() { yield ‘première valeur’; yield ‘deuxième valeur’; yield ‘troisième valeur’;
}

$generator = generatorExample();

foreach ($generator as $value) { echo $value . PHP_EOL;
}
```

Dans cet exemple, la sortie sera :
```
première valeur
deuxième valeur
troisième valeur
```

  1. Applications pratiques

1. Traitement de grandes collections de données : Un générateur est particulièrement utile pour traiter des fichiers de grande taille ligne par ligne, sans charger tout le contenu du fichier en mémoire.

```
function getLines($file) { $f = fopen($file, ‘r’); while ($line = fgets($f)) { yield $line; } fclose($f);
}

foreach (getLines(‘large_file.txt’) as $line) { echo $line;
}
```

1. Gestion des flux de données : Les générateurs peuvent être utilisés pour gérer des flux de données comme des résultats de bases de données par lots, sans charger tous les résultats en mémoire.

```
function fetchDataFromDatabase($pdo, $query) { $stmt = $pdo->query($query); while ($row = $stmt->fetch()) { yield $row; }
}

$pdo = new PDO;
$query = “SELECT * FROM large_table”;

foreach (fetchDataFromDatabase($pdo, $query) as $row) { print_r($row);
}
```

  1. Avantages des générateurs

- Performance mémoire : Puisque les valeurs sont générées une à une, la consommation de mémoire peut être drastiquement réduite.
- Simplicité de code : Les itérations implicites peuvent mener à des scripts plus simples et plus lisibles.
- Latence réduite : Les première valeurs sont disponibles immédiatement, sans attendre que toute la collection soit générée.

  1. Sources

Pour approfondir votre compréhension des générateurs en PHP, vous pouvez consulter la documentation officielle de PHP:
- [PHP Manual – Generators](https://www.php.net/manual/en/language.generators.php)
- [PHP Manual – Yield](https://www.php.net/manual/en/language.generators.syntax.php)

Ces sources fournissent une explication détaillée et des exemples supplémentaires sur l’utilisation des générateurs et de `yield` en PHP.


Générez simplement des articles pour optimiser votre SEO
Générez simplement des articles pour optimiser votre SEO





DinoGeek propose des articles simples sur des technologies complexes

Vous souhaitez être cité dans cet article ? Rien de plus simple, contactez-nous à dino@eiki.fr

CSS | NodeJS | DNS | DMARC | MAPI | NNTP | htaccess | PHP | HTTPS | Drupal | WEB3 | LLM | Wordpress | TLD | Nom de Domaine | IMAP | TCP | NFT | MariaDB | FTP | Zigbee | NMAP | SNMP | SEO | E-Mail | LXC | HTTP | MangoDB | SFTP | RAG | SSH | HTML | ChatGPT API | OSPF | JavaScript | Docker | OpenVZ | ChatGPT | VPS | ZIMBRA | SPF | UDP | Joomla | IPV6 | BGP | Django | Reactjs | DKIM | VMWare | RSYNC | Python | TFTP | Webdav | FAAS | Apache | IPV4 | LDAP | POP3 | SMTP

| Whispers of love (API) | Déclaration d'Amour |






Mentions Légales / Conditions Générales d'Utilisation